// vuex的权限模块
// vuex中的permission模块用来存放当前的 静态路由 + 当前用户的 权限路由

import { constantRoutes, asyncRoutes } from '@/router'

const state = {
  routes: constantRoutes // 初始值是默认开放的静态路由
}

const mutations = {
  // newRoutes可以认为是 用户登录 通过权限所得到的动态路由的部分
  setRoutes (state, newRoutes) {
    state.routes = [...constantRoutes, ...newRoutes]
  }
}

const actions = {
  filterRoutes (context, menus) {
    // menus是该用户 访问权限的权限标识列表
    const routes = []
    menus.forEach(key => {
      // key 是权限标识
      if (asyncRoutes.filter(item => item.name === key)) {
        // filter 得到的是数组格式, 所以需要展开后添加到routes中
        routes.push(...asyncRoutes.filter(item => item.name === key))
      }
    })
    // 增加用户拥有的动态路由
    context.commit('setRoutes', routes)
    return routes
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
